#include <iostream>
using namespace std;
#include <set>
#include <map>

// void test()
// {
//     //排序加去重
//     set<int> s;
//     s.insert(7);
//     s.insert(5);
//     s.insert(4);
//     s.insert(1);
//     s.insert(6);

//     set<int>::iterator it = s.begin();
//     while (it != s.end())
//     {
//         cout << *it  << endl;
//         it++;
//     }

//     for(auto& e:s)
//     {
//         cout << e << ' ';
//     }
//     cout << endl;

//     set<int> ::iterator pos = s.find(5);
//     if(pos != s.end())
//     {
//         cout << *pos << endl;
//         s.erase(pos);
//     }
//     for(auto& e:s)
//     {
//         cout << e << ' ';
//     }
//     cout << endl;

//     s.erase(6);

//     for(auto& e:s)
//     {
//         cout << e << ' ';
//     }
//     cout << endl;
// }

// void test()
// {
//     set<int> s;
//     s.insert(7);
//     s.insert(3);
//     s.insert(5);
//     s.insert(4);
//     s.insert(1);
//     s.insert(6);
//     s.insert(2);

//     set<int>::iterator start = s.lower_bound(3);//>=val
//     set<int>::iterator finish = s.upper_bound(5);//>val

//     s.erase(start,finish);

//     for(auto& e: s)
//     {
//         cout << e << " ";
//     }
//     cout << endl;
// }

// void test()
// {
//     //排序，允许数据重复
//     multiset<int> s;
//     s.insert(7);
//     s.insert(7);
//     s.insert(3);
//     s.insert(5);
//     s.insert(4);
//     s.insert(1);
//     s.insert(1);
//     s.insert(6);
//     s.insert(6);
//     s.insert(2);
//     s.insert(5);
//     for(auto& e: s)
//     {
//         cout << e << " ";
//     }
//     cout << endl;

//     multiset<int>::iterator pos = s.find(5);

//     while(pos != s.end())
//     {
//         cout << *pos << endl;
//         pos++;
//     }
// }

#include <string>

// void test()
// {
//     map<string,string> dict;
//     dict.insert(pair<string,string>("sort","排序"));
//     dict.insert({"string","字符串"});
//     dict.insert({"apple","苹果"});
//     dict.insert({"Faiz","555"});

//     //map<string,string>::iterator it = dict.begin();
//     auto it = dict.begin();
//     while(it != dict.end()) 
//     {
//         cout << it->first << " ";
//         cout << it->second<< endl;
//         ++it;
//     }
// }

void test() 
{
    string arr[] = {"苹果","西瓜","苹果","西瓜","苹果","苹果","西瓜","苹果","香蕉","西瓜","草莓","香蕉","草莓"};
    map<string,int> countmap;
    for(auto& e: arr)
    {
        map<string,int>::iterator it = countmap.find(e);
        if(it != countmap.end())
        {   
            it->second++;
        }
        else
            countmap.insert(make_pair(e,1));
    }

    for(auto& e:countmap)
    {
        cout << e.first <<':' << e.second << endl;
    }
}

int main()
{
    test();    
    return 0;
}

